class Student(object):

    count = 1

    #__slots__ = ('name', '__properties', '_age')

    def __init__(self, name, properties, age=18):
        self.name = name
        self._age = age
        self.__properties = properties

    def test_funciton(self):
        print("I'm nothing")

    @classmethod
    def class_fun(cls):
        # self.count+=1
        cls.count+=1
        print("class_function is called"+"count is "+str(cls.count))


    @staticmethod
    def static_fun():
        Student.count+=1
        print("static_function is called"+"count is "+str(Student.count))
        # Student.test_funciton()

    @property
    def age(self):
        self.ageTest=99999
        print("this is property function!")
        return self._age

    @age.setter
    def age(self,age):
        print("this is setter function!")
        self._age=age

    @age.getter
    def age(self):
        print("this is getter function!")
        return self._age

if __name__ == '__main__':
    s = Student('xxxx', 123)
    print(s.count)
    print(Student.count)
    Student.class_fun()
    Student.static_fun()
    print(s.count)



